********************************************************
* ETAT DE VENTILATION DE PAIE
*
* MARS 1999                             STEPHANE HERVET
********************************************************

* RECAPITULATIF DES GOSUB
* 100 -> ECRITURE DES DONNEES
* 110 -> ECRITURE DES DONNEES (SI ECLAT. ANAL)

* 200 -> AFFECTATION DES DONNEES
* 210 -> AFFECTATION DES HEURES A LA MATRICE (SI PROD.)
* 211 -> AFFECTATION DES DONNEES:RUB. SAISIE (SI ECLAT. ANAL + PROD)
* 212 -> AFFECTATION DES DONNEES:RUB. SAISIE (SI ECLAT. ANAL + ADM)
* 220 -> AFFECTATION DES DONNEES:RUB. CHARGE (SI ECLAT. ANAL)
* 230 -> AFFECTATION DES DONNEES:RUB. AP. CHARGE (SI ECLAT. ANAL)
* 240 -> AFFECTATION DES DONNEES:ATT 6,7,15,16,21

* 300 -> VERIFICATION SI LA RUBRIQUE SAISIE EXISTE DEJA 
* 301 -> VERIFICATION SI LA RUBRIQUE APRES CHARGE EXISTE DEJA 
* 302 -> VERIFICATION SI LA RUBRIQUE CHARGE EXISTE DEJA 
* 310 -> VERIFICATION SI LA RUBRIQUE SAISIE EXISTE DEJA (SUB 210)
* 311 -> VERIFICATION SI LA RUBRIQUE SAISIE EXISTE DEJA (SUB 211,212)
* 312 -> VERIFICATION SI LA RUBRIQUE CHARGE EXISTE DEJA (SUB 211,212)
* 313 -> VERIFICATION SI LA RUBRIQUE AP. CHARGE EXISTE DEJA (SUB 211,212)
* 320 -> RECHERCHE SI ACTIVITE DEJA AFFECTEE (RUB. SAISIE)
* 321 -> RECHERCHE SI RUB. SAISIE DEJA AFFECTEE 
* 330 -> RECHERCHE SI ACTIVITE DEJA AFFECTEE (RUB. CHARGE)
* 331 -> RECHERCHE SI RUB. CHARGE DEJA AFFECTEE 
* 340 -> RECHERCHE SI ACTIVITE DEJA AFFECTEE (RUB. AP. CHARGE)
* 341 -> RECHERCHE SI RUB. AP. CHARGE DEJA AFFECTEE 
* 350 -> RECHERCHE SI ACTIVITE DEJA AFFECTEE (ATT 6+7+15+16+21)
* 360 -> RECHERCHE SI ACTIVITE DEJA AFFECTEE (SUB 240)

* 400 -> CALCUL DE LA SOMME DES HEURES (SI PROD.)
* 401 -> CALCUL DE LA REPARTITION DES HEURES (SI PROD.)
* 402 -> CALCUL DE LA REPARTITION DES HEURES (SI ADM.)

* 500 -> REGROUPE LES ACTIVITES ENSEMBLE (RUB. SAISIE)
* 501 -> REGROUPE LES ACTIVITES ENSEMBLE (RUB. CHARGE)
* 502 -> REGROUPE LES ACTIVITES ENSEMBLE (RUB. AP. CHARGE)
* 503 -> REGROUPE LES ACTIVITES ENSEMBLE (ATT 6+7+15+17+21)

* 600 -> REGROUPE LES ACTIVITES PAR SECTION ANALYTIQUE (SAISIE)
* 601 -> REGROUPE LES ACTIVITES PAR SECTION ANALYTIQUE (CHARGE)
* 602 -> REGROUPE LES ACTIVITES PAR SECTION ANALYTIQUE (APRES CHARGE)
* 603 -> REGROUPE LES ACTIVITES PAR SECTION ANALYTIQUE (ATT 6+7+15+16+21)
* 610 -> RECHERCHE RANG SECTION ANALYTIQUE
* 611 -> RECHERCHE RANG SECTION ANALYTIQUE (SUB 603)

* 999 -> REMISE A ZERO DES VARIABLES

**PRECISION 2

********************************************************
* OUVERTURE DES FICHIERS
********************************************************
EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
OPEN "","TEMPVENTILEDIT" TO F.TEMPVENTILEDIT ELSE STOP
OPEN "","CONTRAT" TO F.CONTRAT ELSE STOP
OPEN "","ASSOCIATION" TO F.ASSOCIATION ELSE STOP
OPEN "","DETAILCALCUL" TO F.DETAILCALCUL ELSE STOP
OPEN "","RUBSAISIE" TO F.RUBSAISIE ELSE STOP
OPEN "","RUBCHARGE" TO F.RUBCHARGE ELSE STOP
OPEN "","CIVILAIDANT" TO F.CIVILAIDANT ELSE STOP
OPEN "","ACTIVITES" TO F.ACTIVITES ELSE STOP

********************************************************
* CHARGEMENT DE LA LISTE DES ARTICLES SELECTIONNES
********************************************************

EXECUTE "LISTE LISTEVENTIL" CAPTURING MSG RETURNING MSGCODE

IF MSGCODE<1>=209 THEN STOP
SELECT F.DETAILCALCUL TO LISTEVENTIL

********************************************************
* RECUPERATION PARAMETRES PASSES A LA PROCEDURE
********************************************************
PROCREAD VARIABLES ELSE 
    *PRINT "ERREUR PROCREAD"
    STOP
END
W_LONG=LEN(VARIABLES)
W_RANGPERIODE=INDEX(VARIABLES," ",1)
W_RANGENTITE=INDEX(VARIABLES," ",2)
W_RANGTYPE=INDEX(VARIABLES," ",3)
W_RANGTRI=INDEX(VARIABLES," ",5)
W_RANGECLATE=INDEX(VARIABLES," ",6)

W_PERIODE=VARIABLES[W_RANGPERIODE+1,6]
W_CODEENTITE=VARIABLES[W_RANGENTITE+1,3]
W_TYPEACT=VARIABLES[W_RANGTYPE+1,1]
W_ECLATEMENT=VARIABLES[W_LONG,1]

********************************************************
* LECTURE FICHIERS                        EN BOUCLE
********************************************************
W_NBART=0
W_TOTAL=0
W_TOTALBRUT=0
W_RANGPLUSFORT=0
W_RANGACT=0
W_RANGRUB=0
W_RANGSECTION=0
W_TOTALECLATBASE=0
W_TOTALECLATMONT=0
W_TOTALECLATMONTIMP=0
W_TOTALECLATNETPAYER=0
W_TOTALECLATMONTPAYER=0
W_RUBSAISIEDONT=""
W_RUBAPSAISIEDONT=""

W_TOUR=1

W_REQVIDE="FAUX"

W_RUBSAISIE=""
W_TABDYN=""
W_SECTEUR=""
W_TYPEPERSONNEL=""
W_TABSECTANAL=""
W_SECTIONANAL=""
W_SECTIONANALCHARGE=""
W_SECTIONANALAPCHARGE=""
W_TABACTIVITE=""
W_REGROUPBRUT=""
W_REGROUPCHARGE=""
W_REGROUPAPCHARGE=""
W_REGROUPSECTIONANAL=""
W_REGROUPSECTIONANALYTIQUE=""

W_ECLATDETAIL=""
W_REGROUPECLAT=""

GOSUB 999

* LECTURE ASSOCIATION
READ ENR_ASSOCIATION FROM F.ASSOCIATION,W_CODEENTITE ELSE 
     *PRINT "ERREUR ENTITE ":W_CODEENTITE
     STOP
END

*Z=0
LOOP
*    Z=Z+1
*PRINT "ART =":Z
    ***************************************************
    * LECTURE RESULTAT REQUETE JUSQUE REQUETE = VIDE
    ***************************************************
    READNEXT CLE FROM LISTEVENTIL ELSE 
         W_REQVIDE="VRAI"
	 IF W_TOUR#1 AND W_ECLATEMENT#"1" THEN
	      GOSUB 100
              GOSUB 999
	 END
    END
    UNTIL W_REQVIDE="VRAI" DO

    W_NBART=W_NBART+1
    ***************************************************
    * LECTURE + AFFECTATION DES DONNEES (READ)
    ***************************************************
    W_CODECONTRAT=CLE[1,8]
    W_CODEAIDANT=CLE[1,5]

    * LECTURE CONTRAT
    READ ENR_CONTRAT FROM F.CONTRAT,W_CODECONTRAT ELSE 
         *PRINT "ERREUR CONTRAT ":W_CODECONTRAT
         STOP
    END

    * LECTURE CIVILAIDANT UNIQUEMENT SI # ECLATEMENT ANAL.
    IF W_ECLATEMENT#1 THEN
         READ ENR_CIVILAIDANT FROM F.CIVILAIDANT,W_CODEAIDANT ELSE
	      *PRINT "ERREUR CIVILAIDANT ":W_CODEAIDANT
    	      STOP
         END

         IF W_TOUR=1 THEN W_TYPEPERSONNEL=ENR_CONTRAT<6>
         IF W_TOUR=1 AND W_ECLATEMENT="3" THEN W_SECTEUR=ENR_CIVILAIDANT<31>
    END

    * LECTURE DETAILCALCUL
    READ ENR_DETAILCALCUL FROM F.DETAILCALCUL,CLE ELSE
         *PRINT "ERREUR DETAILCALCUL ":CLE
	 STOP
    END

    ***************************************************
    * GESTION ECLATEMENT TYPE 2 OU 3
    ***************************************************
    IF W_ECLATEMENT="2" OR W_ECLATEMENT="3" THEN 
	 IF W_ECLATEMENT="2" THEN
	      W_SECTEUR=""
   	      GOSUB 700
              IF W_TYPEPERSONNEL=ENR_CONTRAT<6> THEN 
		   GOSUB 200
	      END ELSE

		   ***************************************************
		   * APPEL ECRITURE_DONNEES SI CHG DE TYPE PERSONNEL
		   *************************************************** 
	           GOSUB 100
	           GOSUB 999
		   ***************************************************
		   * TRAITEMENT CLE ACTUELLE
		   ***************************************************
		   GOSUB 200
	      END	
	 END ELSE
	      *****************
	      * TRAITEMENT W_ECLATEMENT=3
  	      *****************
	      GOSUB 700
	      IF W_SECTEUR=ENR_CIVILAIDANT<31> AND W_TYPEPERSONNEL=ENR_CONTRAT<6> THEN
		   GOSUB 200
	      END ELSE

		   ***************************************************
		   * APPEL ECRITURE_DONNEES SI CHG TYPE PERSONNEL OU SECTEUR
		   *************************************************** 
		   GOSUB 700
	           GOSUB 100
	           GOSUB 999
		   ***************************************************
		   * TRAITEMENT CLE ACTUELLE
		   ***************************************************
		   GOSUB 200
	      END
 	 END	
    END ELSE
	 ***************************************************
	 * GESTION TRI PAR SECTION ANALYTIQUE
	 * PARCOURS DES ACTIVITES DES CONTRATS (DE 1 A X)
	 **************************************************
	 W_NBRUBSAISIE=DCOUNT(ENR_DETAILCALCUL<24>,CHAR(253))

	 W_TABACTIVITE<1>=""
	 W_TABACTIVITE<2>=""
	 W_TABACTIVITE<3>=""

	 W_TOTAL=0
	 W_RANG=1

         IF ENR_CONTRAT<6>="P" THEN
	      * TEST SI ATT 24,25,26 RENSEIGNE
	      IF W_NBRUBSAISIE=0 THEN
		   I=1
		   LOOP 
			UNTIL ENR_DETAILCALCUL<2,I>="" DO
   		        ENR_DETAILCALCUL<24,I>=ENR_DETAILCALCUL<2,I>
			IF ENR_DETAILCALCUL<3,I>="" THEN ENR_DETAILCALCUL<3,I>=0
		        ENR_DETAILCALCUL<25,I>=ENR_DETAILCALCUL<3,I>
		        ENR_DETAILCALCUL<26,I>=ENR_CONTRAT<36,1>
		        ENR_DETAILCALCUL<27,I>=ENR_DETAILCALCUL<5,I>
			I=I+1
		   REPEAT

	   	   W_NBRUBSAISIE=DCOUNT(ENR_DETAILCALCUL<24>,CHAR(253))
	      END		  		
*PRINT ENR_DETAILCALCUL<24>
*PRINT ENR_DETAILCALCUL<25>
*PRINT ENR_DETAILCALCUL<26>
*PRINT ENR_DETAILCALCUL<27>
*DEBUG

              FOR X=1 TO W_NBRUBSAISIE    
                   * CALCUL SOMME DES HEURES
	           GOSUB 400
      	      NEXT 
	      * CALCUL % REPARTITION
	      GOSUB 401

	      * AFFECTATION MATRICE
	      GOSUB 210
              * AFFECTATION DONNEES : RUB. SAISIE
  	      GOSUB 211
	 END ELSE
*PRINT "ADM"
	      * CALCUL % REPARTITION
 	      GOSUB 402
	      * AFFECTATION DONNEES : RUB. SAISIE
	      GOSUB 212
	 END
	 GOSUB 700
	 * AFFECTATION DONNEES : RUB. CHARGE
	 GOSUB 220
	 * AFFECTATION DONNEES : RUB. AP. CHARGE
	 GOSUB 230

	 * AFFECTATION DONNEES : BRUT ACQUIS, MONTANT IMPOSABLE,
	 *			 NET A PAYER, MONTANT A PAYER
	 GOSUB 240
    END

    ***************************************************
    * INCREMENTATION VARIABLE
    ***************************************************
    W_TYPEPERSONNEL=ENR_CONTRAT<6>
    IF W_ECLATEMENT#1 THEN W_SECTEUR=ENR_CIVILAIDANT<31>
    W_TABDYN=""
    W_TOUR=W_TOUR+1
REPEAT

***************************************************
* AFFICHAGE NOMBRE ITEM
***************************************************

IF W_ECLATEMENT="1" THEN 
    GOSUB 110
END

*PRINT "NOMBRE ARTICLE DANS RESULTAT REQUETE : ":W_NBART
RETURN   

***************************************************
* AFFECTATION DES RUBRIQUES DE TYPE "DONT"
***************************************************
700 *

    W_NBATTRIBECLAT=DCOUNT(W_TABACTIVITE<1>,CHAR(253))
    IF W_NBATTRIBECLAT=0 THEN W_NBATTRIBECLAT=1

    I=1
    W_RANG=1

    IF ENR_DETAILCALCUL<33,I><>"" THEN
         LOOP 
	      UNTIL ENR_DETAILCALCUL<33,I>="" DO
              GOSUB 710
	      READ ENR_RUBSAISIE FROM F.RUBSAISIE,ENR_DETAILCALCUL<33,I> ELSE
	           * PRINT "ERREUR RUBSAISIE":ENR_DETAILCALCUL<33,I>
	           STOP
	      END

	      FOR X=1 TO W_NBATTRIBECLAT
	           W_RUBSAISIEDONT<X,1,W_RANG>=ENR_DETAILCALCUL<33,I>
	           W_RUBSAISIEDONT<X,2,W_RANG>="DONT ":ENR_RUBSAISIE<1>
		   IF W_TABACTIVITE<3,X><>"" THEN
	                W_RUBSAISIEDONT<X,3,W_RANG>=W_RUBSAISIEDONT<X,3,W_RANG>+INT(ENR_DETAILCALCUL<34,I>*W_TABACTIVITE<3,X>/10000+1/2)
 	                W_RUBSAISIEDONT<X,4,W_RANG>=W_RUBSAISIEDONT<X,4,W_RANG>+INT(ENR_DETAILCALCUL<36,I>*W_TABACTIVITE<3,X>/10000+1/2)
		   END ELSE
	                W_RUBSAISIEDONT<X,3,W_RANG>=W_RUBSAISIEDONT<X,3,W_RANG>+ENR_DETAILCALCUL<34,I>/100
 	                W_RUBSAISIEDONT<X,4,W_RANG>=W_RUBSAISIEDONT<X,4,W_RANG>+ENR_DETAILCALCUL<36,I>/100
		   END
	      NEXT
	      I=I+1
         REPEAT
    END

    I=1
    W_RANG=1

    IF ENR_DETAILCALCUL<37,I><>"" THEN
         LOOP 
	      UNTIL ENR_DETAILCALCUL<37,I>="" DO
     	      GOSUB 711
	      READ ENR_RUBSAISIE FROM F.RUBSAISIE,ENR_DETAILCALCUL<37,I> ELSE
	           * PRINT "ERREUR RUBSAISIE":ENR_DETAILCALCUL<37,I>
	           STOP
	      END

	      FOR X=1 TO W_NBATTRIBECLAT
	           W_RUBAPSAISIEDONT<X,1,W_RANG>=ENR_DETAILCALCUL<37,I>
	           W_RUBAPSAISIEDONT<X,2,W_RANG>="DONT ":ENR_RUBSAISIE<1>
		   IF W_TABACTIVITE<3,X><>"" THEN
	                W_RUBAPSAISIEDONT<X,3,W_RANG>=W_RUBAPSAISIEDONT<X,3,W_RANG>+INT(ENR_DETAILCALCUL<38,I>*W_TABACTIVITE<3,X>/10000+1/2)
 	                W_RUBAPSAISIEDONT<X,4,W_RANG>=W_RUBAPSAISIEDONT<X,4,W_RANG>+INT(ENR_DETAILCALCUL<40,I>*W_TABACTIVITE<3,X>/10000+1/2)
		   END ELSE
	                W_RUBAPSAISIEDONT<X,3,W_RANG>=W_RUBAPSAISIEDONT<X,3,W_RANG>+ENR_DETAILCALCUL<38,I>/100
 	                W_RUBAPSAISIEDONT<X,4,W_RANG>=W_RUBAPSAISIEDONT<X,4,W_RANG>+ENR_DETAILCALCUL<40,I>/100
		   END
	      NEXT
	      I=I+1
         REPEAT
    END

RETURN

***************************************************
* VERIFICATION SI LA RUBRIQUE "DONT" EXISTE DEJA
***************************************************
710 *
    J=1
    LOOP 
	 UNTIL ENR_DETAILCALCUL<33,I>=W_RUBSAISIEDONT<1,1,J> OR W_RUBSAISIEDONT<1,1,J>="" DO
	 J=J+1
    REPEAT

    W_RANG=J

RETURN

***************************************************
* VERIFICATION SI LA RUBRIQUE "DONT" EXISTE DEJA
***************************************************
711 *
    J=1
    LOOP 
	 UNTIL ENR_DETAILCALCUL<37,I>=W_RUBAPSAISIEDONT<1,1,J> OR W_RUBAPSAISIEDONT<1,1,J>="" DO
	 J=J+1
    REPEAT

    W_RANG=J

RETURN

***************************************************
* ECRITURE DES DONNEES
***************************************************
100 *
**    IF W_SECTEUR="" THEN
    IF W_ECLATEMENT="2" THEN
         W_CODEVENTIL=W_PERIODE:W_CODEENTITE:W_TYPEACT:W_TYPEPERSONNEL
    END ELSE
         W_CODEVENTIL=W_PERIODE:W_CODEENTITE:W_TYPEACT:W_TYPEPERSONNEL:W_SECTEUR
    END

    W_TABDYN=REPLACE(W_TABDYN,1;ENR_ASSOCIATION<1>)
    W_TABDYN=REPLACE(W_TABDYN,2;ENR_ASSOCIATION<3>:" ":ENR_ASSOCIATION<4>:" ":ENR_ASSOCIATION<5>:" ":ENR_ASSOCIATION<6>)
    W_TABDYN=REPLACE(W_TABDYN,3;ENR_ASSOCIATION<8>:" ":ENR_ASSOCIATION<9>)
    W_TABDYN=REPLACE(W_TABDYN,4;W_TYPEPERSONNEL)
    W_TABDYN=REPLACE(W_TABDYN,5;W_SECTEUR)

* ECRITURE RUBRIQUE DE SAISIE
    W_TABDYN=REPLACE(W_TABDYN,6,1;W_RUBSAISIECODE)
    W_TABDYN=REPLACE(W_TABDYN,6,2;W_RUBSAISIELIB)
    W_TABDYN=REPLACE(W_TABDYN,6,3;W_RUBSAISIEBASE)
    W_TABDYN=REPLACE(W_TABDYN,6,4;W_RUBSAISIEMONT)

* ECRITURE RUBRIQUE DE SAISIE "DONT"
    W_TABDYN=REPLACE(W_TABDYN,7;W_RUBSAISIEDONT)

* ECRITURE TOTAL BRUT, NET IMPOSABLE, NET A PAYER
    W_TABDYN=REPLACE(W_TABDYN,8,3;W_BRUTACQUISBASE)
    W_TABDYN=REPLACE(W_TABDYN,8,4;W_BRUTACQUISMONT)
    W_TABDYN=REPLACE(W_TABDYN,9;W_NETIMPOSABLE)
    W_TABDYN=REPLACE(W_TABDYN,10;W_NETAPAYER)

* ECRITURE RUBRIQUE APRES CHARGE
    W_TABDYN=REPLACE(W_TABDYN,11,1;W_RUBSAISIEAPCODE)
    W_TABDYN=REPLACE(W_TABDYN,11,2;W_RUBSAISIEAPLIB)
    W_TABDYN=REPLACE(W_TABDYN,11,3;W_RUBSAISIEAPBASE)
    W_TABDYN=REPLACE(W_TABDYN,11,4;W_RUBSAISIEAPMONT)

* ECRITURE RUBRIQUE DE SAISIE "DONT"
    W_TABDYN=REPLACE(W_TABDYN,12;W_RUBAPSAISIEDONT)

* ECRITURE MONTANT A PAYER
    W_TABDYN=REPLACE(W_TABDYN,13;W_MONTANTAPAYER)

* ECRITURE RUBRIQUE DE CHARGE
    W_TABDYN=REPLACE(W_TABDYN,14,1;W_RUBCHARGECODE)
    W_TABDYN=REPLACE(W_TABDYN,14,2;W_RUBCHARGELIB)
    W_TABDYN=REPLACE(W_TABDYN,14,3;W_RUBCHARGEBASE)
    W_TABDYN=REPLACE(W_TABDYN,14,4;W_RUBCHARGETAUXPAT)
    W_TABDYN=REPLACE(W_TABDYN,14,5;W_RUBCHARGEMONTPAT)
    W_TABDYN=REPLACE(W_TABDYN,14,6;W_RUBCHARGETAUXSAL)
    W_TABDYN=REPLACE(W_TABDYN,14,7;W_RUBCHARGEMONTSAL)
    W_TABDYN=REPLACE(W_TABDYN,14,8;W_RUBCHARGETOTALTAUX)
    W_TABDYN=REPLACE(W_TABDYN,14,9;W_RUBCHARGETOTALMONT)

    WRITE W_TABDYN ON F.TEMPVENTILEDIT,W_CODEVENTIL
RETURN

***************************************************
* ECRITURE DES DONNEES (SECTION ANALYTIQUE)
***************************************************
110 * 

    GOSUB 500
    GOSUB 501
    GOSUB 502

    GOSUB 600
    GOSUB 601
    GOSUB 602
    GOSUB 603

    W_NBECLATEMENTANAL=DCOUNT(W_TABACTIVITE<1>,CHAR(235))

* ECRITURE ENTETE
    W_TABACTIVITE=REPLACE(W_TABACTIVITE,1;ENR_ASSOCIATION<1>)
    W_TABACTIVITE=REPLACE(W_TABACTIVITE,2;ENR_ASSOCIATION<3>:" ":ENR_ASSOCIATION<4>:" ":ENR_ASSOCIATION<5>:" ":ENR_ASSOCIATION<6>)
    W_TABACTIVITE=REPLACE(W_TABACTIVITE,3;ENR_ASSOCIATION<8>:" ":ENR_ASSOCIATION<9>)
    W_TABACTIVITE=REPLACE(W_TABACTIVITE,4;W_TYPEPERSONNEL)
    W_TABACTIVITE=REPLACE(W_TABACTIVITE,5;W_SECTEUR)

* ECRITURE RUBRIQUE DE SAISIE AVEC REPARTITION PAR ACTIVITE
    I=2

    W_TABACTIVITE=REPLACE(W_TABACTIVITE,6;W_REGROUPSECTIONANALYTIQUE)

    LOOP 
	 UNTIL W_REGROUPSECTIONANALBRUT<I>="" DO
	 W_TABACTIVITE=REPLACE(W_TABACTIVITE,5+I;W_REGROUPSECTIONANALBRUT<I>)
	 I=I+1
    REPEAT 	 

* ECRITURE RUBRIQUE SAISIE "DONT"
    W_IDONT=I
    FOR X=1 TO W_NBECLATEMENTANAL    
        I=1
        LOOP 
	     UNTIL W_RUBSAISIEDONT<X,1,I>="" DO 
	     W_TABACTIVITE=REPLACE(W_TABACTIVITE,5+I+W_IDONT,1,1;W_RUBSAISIEDONT<X,1,I>)
	     W_TABACTIVITE=REPLACE(W_TABACTIVITE,5+I+W_IDONT,X+1,1;W_RUBSAISIEDONT<X,3,I>)
	     W_TABACTIVITE=REPLACE(W_TABACTIVITE,5+I+W_IDONT,X+1,2;W_RUBSAISIEDONT<X,4,I>)
	     I=I+1	 
        REPEAT
    NEXT

    W_ANCIENI=W_IDONT+I+5
    W_TABACTIVITE=REPLACE(W_TABACTIVITE,W_ANCIENI;"BASE")
    W_ANCIENI=W_ANCIENI+1

* ECRITURE TOTAL BRUT, NET IMPOSABLE, NET A PAYER
    W_TABACTIVITE=REPLACE(W_TABACTIVITE,W_ANCIENI;W_REGROUPECLATDETAIL<1>)
    W_TABACTIVITE=REPLACE(W_TABACTIVITE,W_ANCIENI+1;W_REGROUPECLATDETAIL<2>)
    W_TABACTIVITE=REPLACE(W_TABACTIVITE,W_ANCIENI+2;W_REGROUPECLATDETAIL<3>)
    W_TABACTIVITE=REPLACE(W_TABACTIVITE,W_ANCIENI+3;W_REGROUPECLATDETAIL<4>)
    W_TABACTIVITE=REPLACE(W_TABACTIVITE,W_ANCIENI+4;"RUBRIQUE DE CHARGE")
    W_ANCIENI=W_ANCIENI+3

* ECRITURE RUBRIQUE DE CHARGE AVEC REPARTITION PAR ACTIVITE
    I=2

    LOOP 
	 UNTIL W_REGROUPSECTIONANALCHARGE<I>="" DO
	 W_TABACTIVITE=REPLACE(W_TABACTIVITE,W_ANCIENI+I;W_REGROUPSECTIONANALCHARGE<I>)
	 I=I+1
    REPEAT 	 

    W_ANCIENI=W_ANCIENI+I

    W_TABACTIVITE=REPLACE(W_TABACTIVITE,W_ANCIENI;"RUBRIQUE APRES CHARGE")
    W_ANCIENI=W_ANCIENI-1

* ECRITURE RUBRIQUE AP. CHARGE AVEC REPARTITION PAR ACTIVITE
    I=2

    LOOP 
	 UNTIL W_REGROUPSECTIONANALAPCHARGE<I>="" DO
	 W_TABACTIVITE=REPLACE(W_TABACTIVITE,W_ANCIENI+I;W_REGROUPSECTIONANALAPCHARGE<I>)
	 I=I+1
    REPEAT 	 

    W_ANCIENI=W_ANCIENI+I

* ECRITURE RUBRIQUE AP. CHARGE "DONT"
    FOR X=1 TO W_NBECLATEMENTANAL    
        I=1
        LOOP 
	     UNTIL W_RUBSAISIEDONT<X,1,I>="" DO 
	     W_TABACTIVITE=REPLACE(W_TABACTIVITE,W_ANCIENI+I,1,1;W_RUBAPSAISIEDONT<X,1,I>)
	     W_TABACTIVITE=REPLACE(W_TABACTIVITE,W_ANCIENI+I,X+1,1;W_RUBAPSAISIEDONT<X,3,I>)
	     W_TABACTIVITE=REPLACE(W_TABACTIVITE,W_ANCIENI+I,X+1,2;W_RUBAPSAISIEDONT<X,4,I>)
	     I=I+1	 
        REPEAT
    NEXT

    WRITE W_TABACTIVITE ON F.TEMPVENTILEDIT,W_CODEENTITE
RETURN

***************************************************
* AFFECTATION DES DONNEES
***************************************************
200 *

* PARTIE CONCERNANT LES RUBRIQUES DE SAISIE
    I=1
    W_RANG=1

    LOOP
	 UNTIL ENR_DETAILCALCUL<2,I>="" DO
	 GOSUB 300
	 READ ENR_RUBSAISIE FROM F.RUBSAISIE,ENR_DETAILCALCUL<2,I> ELSE 
              *PRINT "ERREUR RUBSAISIE ":ENR_RUBSAISIE<0>
              STOP
   	 END
	 W_RUBSAISIECODE=REPLACE(W_RUBSAISIECODE,1,1,W_RANG;ENR_DETAILCALCUL<2,I>)
	 W_RUBSAISIELIB=REPLACE(W_RUBSAISIELIB,1,1,W_RANG;ENR_RUBSAISIE<1>)
	 W_RUBSAISIEBASE=REPLACE(W_RUBSAISIEBASE,1,1,W_RANG;W_RUBSAISIEBASE<1,1,W_RANG>+(ENR_DETAILCALCUL<3,I>/100))
	 W_RUBSAISIEMONT=REPLACE(W_RUBSAISIEMONT,1,1,W_RANG;W_RUBSAISIEMONT<1,1,W_RANG>+(ENR_DETAILCALCUL<5,I>/100))
         W_RANG=W_RANG+1
	 I=I+1
    REPEAT

* PARTIE CONCERNANT LE BRUT ACQUIS
    W_BRUTACQUISBASE=W_BRUTACQUISBASE+(ENR_DETAILCALCUL<6>/100)
    W_BRUTACQUISMONT=W_BRUTACQUISMONT+(ENR_DETAILCALCUL<7>/100)

* PARTIE CONCERNANT LE NET IMPOSABLE,NET A PAYER
    W_NETIMPOSABLE=W_NETIMPOSABLE+(ENR_DETAILCALCUL<15>/100)
    W_NETAPAYER=W_NETAPAYER+(ENR_DETAILCALCUL<16>/100)

* PARTIE CONCERNANT LES RUBRIQUES APRES CHARGES
    I=1
    W_RANG=1
    LOOP
	 UNTIL ENR_DETAILCALCUL<17,I>="" DO
	 GOSUB 301
	 READ ENR_RUBSAISIE FROM F.RUBSAISIE,ENR_DETAILCALCUL<17,I> ELSE 
              *PRINT "ERREUR RUBSAISIE ":ENR_RUBSAISIE<0>
              STOP
   	 END
	 W_RUBSAISIEAPCODE=REPLACE(W_RUBSAISIEAPCODE,1,1,W_RANG;ENR_DETAILCALCUL<17,I>)
	 W_RUBSAISIEAPLIB=REPLACE(W_RUBSAISIEAPLIB,1,1,W_RANG;ENR_RUBSAISIE<1>)
	 W_RUBSAISIEAPBASE=REPLACE(W_RUBSAISIEAPBASE,1,1,W_RANG;W_RUBSAISIEAPBASE<1,1,W_RANG>+(ENR_DETAILCALCUL<18,I>/100))
	 W_RUBSAISIEAPMONT=REPLACE(W_RUBSAISIEAPMONT,1,1,W_RANG;W_RUBSAISIEAPMONT<1,1,W_RANG>+(ENR_DETAILCALCUL<20,I>/100))
         W_RANG=W_RANG+1
	 I=I+1
    REPEAT

* PARTIE CONCERNANT LE MONTANT A PAYER
    W_MONTANTAPAYER=W_MONTANTAPAYER+(ENR_DETAILCALCUL<21>/100)

* PARTIE CONCERNANT LES RUBRIQUES DE CHARGES
    I=1
    W_RANG=1
    LOOP
	 UNTIL ENR_DETAILCALCUL<8,I>="" DO
	 GOSUB 302
	 READ ENR_RUBCHARGE FROM F.RUBCHARGE,ENR_DETAILCALCUL<8,I> ELSE 
              *PRINT "ERREUR RUBCHARGE ":ENR_RUBCHARGE<0>
              STOP
   	 END
	 W_RUBCHARGECODE=REPLACE(W_RUBCHARGECODE,1,1,W_RANG;ENR_DETAILCALCUL<8,I>)
	 W_RUBCHARGELIB=REPLACE(W_RUBCHARGELIB,1,1,W_RANG;ENR_RUBCHARGE<1>)
	 IF ENR_DETAILCALCUL<9,I><>"" AND ENR_DETAILCALCUL<9,I><>"0" THEN
  	      W_RUBCHARGEBASE=REPLACE(W_RUBCHARGEBASE,1,1,W_RANG;W_RUBCHARGEBASE<1,1,W_RANG>+(ENR_DETAILCALCUL<9,I>/100))
	 END ELSE
  	      W_RUBCHARGEBASE=REPLACE(W_RUBCHARGEBASE,1,1,W_RANG;W_RUBCHARGEBASE<1,1,W_RANG>+(ENR_DETAILCALCUL<12,I>/100))
	 END
	 W_RUBCHARGETAUXPAT=REPLACE(W_RUBCHARGETAUXPAT,1,1,W_RANG;ENR_DETAILCALCUL<13,I>/1000)
	 W_RUBCHARGEMONTPAT=REPLACE(W_RUBCHARGEMONTPAT,1,1,W_RANG;W_RUBCHARGEMONTPAT<1,1,W_RANG>+(ENR_DETAILCALCUL<14,I>/100))
	 W_RUBCHARGETAUXSAL=REPLACE(W_RUBCHARGETAUXSAL,1,1,W_RANG;ENR_DETAILCALCUL<10,I>/1000)
	 W_RUBCHARGEMONTSAL=REPLACE(W_RUBCHARGEMONTSAL,1,1,W_RANG;W_RUBCHARGEMONTSAL<1,1,W_RANG>+(ENR_DETAILCALCUL<11,I>/100))
	 W_TOTALTAUX=(W_RUBCHARGETAUXPAT<1,1,W_RANG>+W_RUBCHARGETAUXSAL<1,1,W_RANG>)
	 W_TOTALMONT=(W_RUBCHARGEMONTPAT<1,1,W_RANG>-W_RUBCHARGEMONTSAL<1,1,W_RANG>)
         W_RUBCHARGETOTALTAUX=REPLACE(W_RUBCHARGETOTALTAUX,1,1,W_RANG;W_TOTALTAUX)
         W_RUBCHARGETOTALMONT=REPLACE(W_RUBCHARGETOTALMONT,1,1,W_RANG;W_TOTALMONT)
         W_RANG=W_RANG+1
	 I=I+1
    REPEAT
RETURN


***************************************************
* AFFECTATION DES HEURES A LA MATRICE (SI PROD.)
***************************************************
210 *
    I=1
    W_RANG=1

    LOOP
	 UNTIL W_TABACTIVITE<1,I>="" DO

         READ ENR_RUBSAISIE FROM F.RUBSAISIE,W_TABACTIVITE<2,I,1> ELSE 
              *PRINT "ERREUR RUBSAISIE ":W_TABACTIVITE<2,I,1>
              STOP
         END

	 GOSUB 310

	 W_SECTIONANAL=REPLACE(W_SECTIONANAL,1,W_RANG,1;W_TABACTIVITE<1,I>)
      	 W_SECTIONANAL=REPLACE(W_SECTIONANAL,1,W_RANG,2;W_TABACTIVITE<2,I,1>)
	 W_SECTIONANAL=REPLACE(W_SECTIONANAL,1,W_RANG,3;ENR_RUBSAISIE<1>)
      	 W_SECTIONANAL=REPLACE(W_SECTIONANAL,1,W_RANG,4;W_SECTIONANAL<1,I,4>+W_TABACTIVITE<2,I,2>)
	 W_SECTIONANAL=REPLACE(W_SECTIONANAL,1,W_RANG,5;W_SECTIONANAL<1,I,5>+W_TABACTIVITE<2,I,3>)

	 I=I+1
    REPEAT

*PRINT W_SECTIONANAL
*DEBUG
RETURN

***************************************************
* AFFECTATION DES DONNEES:RUB. SAISIE (SI ECLAT. ANAL + PROD)
***************************************************
211 *

* AFFECTATION DES RUBRIQUES DE SAISIE
    I=1
    LOOP 
         UNTIL ENR_DETAILCALCUL<2,I>="" DO

	 READ ENR_RUBSAISIE FROM F.RUBSAISIE,ENR_DETAILCALCUL<2,I> ELSE
              *PRINT "ERREUR RUBSAISIE ":ENR_DETAILCALCUL<2,I>
              STOP
         END

	 W_TOTALREPARTANALBASE=0
	 W_TOTALREPARTANALMONT=0

*PRINT "ENR SAISIE ":ENR_RUBSAISIE<2>
*DEBUG
	 * AFFECTATION UNIQUEMENT SI #3 ET #4
         IF ENR_RUBSAISIE<2>#3 AND ENR_RUBSAISIE<2>#4 THEN

	      W_NBATTRIBUTECLAT=DCOUNT(W_TABACTIVITE<1>,CHAR(253))

   	      GOSUB 311

	      FOR X=1 TO W_NBATTRIBUTECLAT
 		   W_SECTIONANAL=REPLACE(W_SECTIONANAL,W_RANG,X,1;W_TABACTIVITE<1,X>)
       		   W_SECTIONANAL=REPLACE(W_SECTIONANAL,W_RANG,X,2;ENR_DETAILCALCUL<2,I>)
		   W_SECTIONANAL=REPLACE(W_SECTIONANAL,W_RANG,X,3;ENR_RUBSAISIE<1>)
      		   W_SECTIONANAL=REPLACE(W_SECTIONANAL,W_RANG,X,4;W_SECTIONANAL<W_RANG,X,4>+INT(ENR_DETAILCALCUL<3,I>*W_TABACTIVITE<3,X>/10000+1/2))
		   W_SECTIONANAL=REPLACE(W_SECTIONANAL,W_RANG,X,5;W_SECTIONANAL<W_RANG,X,5>+INT(ENR_DETAILCALCUL<5,I>*W_TABACTIVITE<3,X>/10000+1/2))

                   W_TOTALREPARTANALBASE=W_TOTALREPARTANALBASE+W_SECTIONANAL<W_RANG,X,4>
                   W_TOTALREPARTANALMONT=W_TOTALREPARTANALMONT+W_SECTIONANAL<W_RANG,X,5>
	      NEXT

	      * SI TOTAL#BASE RUB
	      IF W_TOTALREPARTANALBASE#ENR_DETAILCALCUL<3,I> THEN
		   IF W_TOTALREPARTANALBASE<ENR_DETAILCALCUL<3,I> THEN
    		        W_SECTIONANAL=REPLACE(W_SECTIONANAL,W_RANG,W_RANGPLUSFORT,4;W_SECTIONANAL<W_RANG,W_RANGPLUSFORT,4>-(W_TOTALREPARTANALBASE-ENR_DETAILCALCUL<3,I>))
		   END ELSE
  		        W_SECTIONANAL=REPLACE(W_SECTIONANAL,W_RANG,W_RANGPLUSFAIBLE,4;W_SECTIONANAL<W_RANG,W_RANGPLUSFAIBLE,4>-(W_TOTALREPARTANALBASE-ENR_DETAILCALCUL<3,I>))
		   END
	      END

	      * SI TOTAL#MONT RUB
	      IF W_TOTALREPARTANALMONT#ENR_DETAILCALCUL<5,I> THEN
		   IF W_TOTALREPARTANALMONT<ENR_DETAILCALCUL<5,I> THEN
		        W_SECTIONANAL=REPLACE(W_SECTIONANAL,W_RANG,W_RANGPLUSFORT,5;W_SECTIONANAL<W_RANG,W_RANGPLUSFORT,5>-(W_TOTALREPARTANALMONT-ENR_DETAILCALCUL<5,I>))
		   END ELSE
  		        W_SECTIONANAL=REPLACE(W_SECTIONANAL,W_RANG,W_RANGPLUSFAIBLE,5;W_SECTIONANAL<W_RANG,W_RANGPLUSFAIBLE,5>-(W_TOTALREPARTANALMONT-ENR_DETAILCALCUL<5,I>))
		   END
	      END
	 END
	 I=I+1
    REPEAT

    * PARTIE CONCERNANT LE BRUT ACQUIS
    W_BRUTACQUISBASE=W_BRUTACQUISBASE+ENR_DETAILCALCUL<6>
    W_BRUTACQUISMONT=W_BRUTACQUISMONT+ENR_DETAILCALCUL<7>

    * PARTIE CONCERNANT LE NET IMPOSABLE,NET A PAYER
    W_NETIMPOSABLE=W_NETIMPOSABLE+ENR_DETAILCALCUL<15>
    W_NETAPAYER=W_NETAPAYER+ENR_DETAILCALCUL<16>

*PRINT W_SECTIONANAL
*DEBUG

RETURN

***************************************************
* AFFECTATION DES DONNEES:RUB. SAISIE (SI ECLAT. ANAL + ADM)
***************************************************
212 *

* AFFECTATION DES RUBRIQUES DE SAISIE
    I=1
    LOOP 
         UNTIL ENR_DETAILCALCUL<2,I>="" DO

	 READ ENR_RUBSAISIE FROM F.RUBSAISIE,ENR_DETAILCALCUL<2,I> ELSE
              *PRINT "ERREUR RUBSAISIE ":ENR_DETAILCALCUL<2,I>
              STOP
         END

	 W_TOTALREPARTANALBASE=0
	 W_TOTALREPARTANALMONT=0

	 W_NBATTRIBUTECLAT=DCOUNT(W_TABACTIVITE<1>,CHAR(253))

         GOSUB 3111

	 FOR X=1 TO W_NBATTRIBUTECLAT
	      W_SECTIONANAL=REPLACE(W_SECTIONANAL,W_RANG,X,1;W_TABACTIVITE<1,X>)
              W_SECTIONANAL=REPLACE(W_SECTIONANAL,W_RANG,X,2;ENR_DETAILCALCUL<2,I>)
	      W_SECTIONANAL=REPLACE(W_SECTIONANAL,W_RANG,X,3;ENR_RUBSAISIE<1>)
      	      W_SECTIONANAL=REPLACE(W_SECTIONANAL,W_RANG,X,4;W_SECTIONANAL<W_RANG,X,4>+INT(ENR_DETAILCALCUL<3,I>*W_TABACTIVITE<3,X>/10000+1/2))
	      W_SECTIONANAL=REPLACE(W_SECTIONANAL,W_RANG,X,5;W_SECTIONANAL<W_RANG,X,5>+INT(ENR_DETAILCALCUL<5,I>*W_TABACTIVITE<3,X>/10000+1/2))
		   
              W_TOTALREPARTANALBASE=W_TOTALREPARTANALBASE+W_SECTIONANAL<W_RANG,X,4>
              W_TOTALREPARTANALMONT=W_TOTALREPARTANALMONT+W_SECTIONANAL<W_RANG,X,5>
	 NEXT

	 * SI TOTAL#BASE RUB
	 IF W_TOTALREPARTANALBASE#ENR_DETAILCALCUL<3,I> THEN
	      IF W_TOTALREPARTANALBASE<ENR_DETAILCALCUL<3,I> THEN
    		   W_SECTIONANAL=REPLACE(W_SECTIONANAL,W_RANG,W_RANGPLUSFORT,4;W_SECTIONANAL<W_RANG,W_RANGPLUSFORT,4>-(W_TOTALREPARTANALBASE-ENR_DETAILCALCUL<3,I>))
	      END ELSE
  		   W_SECTIONANAL=REPLACE(W_SECTIONANAL,W_RANG,W_RANGPLUSFAIBLE,4;W_SECTIONANAL<W_RANG,W_RANGPLUSFAIBLE,4>-(W_TOTALREPARTANALBASE-ENR_DETAILCALCUL<3,I>))
	      END
	 END

         * SI TOTAL#MONT RUB
	 IF W_TOTALREPARTANALMONT#ENR_DETAILCALCUL<5,I>THEN
	      IF W_TOTALREPARTANALBASE<ENR_DETAILCALCUL<5,I> THEN
		   W_SECTIONANAL=REPLACE(W_SECTIONANAL,W_RANG,W_RANGPLUSFORT,5;W_SECTIONANAL<W_RANG,W_RANGPLUSFORT,5>-(W_TOTALREPARTANALMONT-ENR_DETAILCALCUL<5,I>))
	      END ELSE
  		   W_SECTIONANAL=REPLACE(W_SECTIONANAL,W_RANG,W_RANGPLUSFAIBLE,5;W_SECTIONANAL<W_RANG,W_RANGPLUSFAIBLE,5>-(W_TOTALREPARTANALMONT-ENR_DETAILCALCUL<5,I>))
	      END
         END
	 I=I+1
    REPEAT

    * PARTIE CONCERNANT LE BRUT ACQUIS
    W_BRUTACQUISBASE=W_BRUTACQUISBASE+ENR_DETAILCALCUL<6>
    W_BRUTACQUISMONT=W_BRUTACQUISMONT+ENR_DETAILCALCUL<7>

    * PARTIE CONCERNANT LE NET IMPOSABLE,NET A PAYER
    W_NETIMPOSABLE=W_NETIMPOSABLE+ENR_DETAILCALCUL<15>
    W_NETAPAYER=W_NETAPAYER+ENR_DETAILCALCUL<16>

*PRINT W_SECTIONANAL
*DEBUG
RETURN

***************************************************
* AFFECTATION DES DONNEES:RUB. CHARGE (SI ECLAT. ANAL)
***************************************************
220 *

* AFFECTATION DES RUBRIQUES DE CHARGE
    I=1
    LOOP 
         UNTIL ENR_DETAILCALCUL<8,I>="" DO

	 READ ENR_RUBCHARGE FROM F.RUBCHARGE,ENR_DETAILCALCUL<8,I> ELSE
              *PRINT "ERREUR RUBCHARGE ":ENR_DETAILCALCUL<8,I>
              STOP
         END

	 W_TOTALREPARTANALBASE=0
	 W_TOTALREPARTANALMONT=0
	 W_TOTALREPARTANALMONTPAT=0

	 W_NBATTRIBUTECLAT=DCOUNT(W_TABACTIVITE<1>,CHAR(253))

*	 IF ENR_CONTRAT<6>="A" THEN
              GOSUB 3121
*	 END ELSE
*	      GOSUB 312
*	 END

	 FOR X=1 TO W_NBATTRIBUTECLAT
	      W_SECTIONANALCHARGE=REPLACE(W_SECTIONANALCHARGE,W_RANG,X,1;W_TABACTIVITE<1,X>)
              W_SECTIONANALCHARGE=REPLACE(W_SECTIONANALCHARGE,W_RANG,X,2;ENR_DETAILCALCUL<8,I>)
	      W_SECTIONANALCHARGE=REPLACE(W_SECTIONANALCHARGE,W_RANG,X,3;ENR_RUBCHARGE<1>)
	      IF ENR_DETAILCALCUL<9,I><>"" AND ENR_DETAILCALCUL<9,I><>"0" THEN
      	           W_SECTIONANALCHARGE=REPLACE(W_SECTIONANALCHARGE,W_RANG,X,4;W_SECTIONANALCHARGE<W_RANG,X,4>+INT(ENR_DETAILCALCUL<9,I>*W_TABACTIVITE<3,X>/10000+1/2))
	      END ELSE
      	           W_SECTIONANALCHARGE=REPLACE(W_SECTIONANALCHARGE,W_RANG,X,4;W_SECTIONANALCHARGE<W_RANG,X,4>+INT(ENR_DETAILCALCUL<12,I>*W_TABACTIVITE<3,X>/10000+1/2))
	      END
     	      W_SECTIONANALCHARGE=REPLACE(W_SECTIONANALCHARGE,W_RANG,X,5;ENR_DETAILCALCUL<10,I>/1000)
	      IF ENR_DETAILCALCUL<11,I>>0 THEN	      
		   W_SECTIONANALCHARGE=REPLACE(W_SECTIONANALCHARGE,W_RANG,X,6;W_SECTIONANALCHARGE<W_RANG,X,6>+INT(ENR_DETAILCALCUL<11,I>*W_TABACTIVITE<3,X>/10000+1/2))
	      END ELSE
		   W_SECTIONANALCHARGE=REPLACE(W_SECTIONANALCHARGE,W_RANG,X,6;W_SECTIONANALCHARGE<W_RANG,X,6>+INT(ENR_DETAILCALCUL<11,I>*W_TABACTIVITE<3,X>/10000-1/2))
	      END
   	      W_SECTIONANALCHARGE=REPLACE(W_SECTIONANALCHARGE,W_RANG,X,7;ENR_DETAILCALCUL<13,I>/1000)
	      W_SECTIONANALCHARGE=REPLACE(W_SECTIONANALCHARGE,W_RANG,X,8;W_SECTIONANALCHARGE<W_RANG,X,8>+INT(ENR_DETAILCALCUL<14,I>*W_TABACTIVITE<3,X>/10000+1/2))		   

              W_TOTALREPARTANALBASE=W_TOTALREPARTANALBASE+W_SECTIONANALCHARGE<W_RANG,X,4>
              W_TOTALREPARTANALMONT=W_TOTALREPARTANALMONT+W_SECTIONANALCHARGE<W_RANG,X,6>
              W_TOTALREPARTANALMONTPAT=W_TOTALREPARTANALMONTPAT+W_SECTIONANALCHARGE<W_RANG,X,8>
	 NEXT

	 * SI TOTAL#BASE RUB
	 IF ENR_DETAILCALCUL<9,I><>"" AND ENR_DETAILCALCUL<9,I><>"0" THEN
  	      IF W_TOTALREPARTANALBASE#ENR_DETAILCALCUL<9,I> THEN
	           IF W_TOTALREPARTANALBASE<ENR_DETAILCALCUL<9,I> THEN
    		        W_SECTIONANALCHARGE=REPLACE(W_SECTIONANALCHARGE,W_RANG,W_RANGPLUSFORT,4;W_SECTIONANALCHARGE<W_RANG,W_RANGPLUSFORT,4>-(W_TOTALREPARTANALBASE-ENR_DETAILCALCUL<9,I>))
  	           END ELSE
  		        W_SECTIONANALCHARGE=REPLACE(W_SECTIONANALCHARGE,W_RANG,W_RANGPLUSFAIBLE,4;W_SECTIONANALCHARGE<W_RANG,W_RANGPLUSFAIBLE,4>-(W_TOTALREPARTANALBASE-ENR_DETAILCALCUL<9,I>))
	           END
	      END 
	 END ELSE
  	      IF W_TOTALREPARTANALBASE#ENR_DETAILCALCUL<12,I> THEN
	           IF W_TOTALREPARTANALBASE<ENR_DETAILCALCUL<12,I> THEN
    		        W_SECTIONANALCHARGE=REPLACE(W_SECTIONANALCHARGE,W_RANG,W_RANGPLUSFORT,4;W_SECTIONANALCHARGE<W_RANG,W_RANGPLUSFORT,4>-(W_TOTALREPARTANALBASE-ENR_DETAILCALCUL<12,I>))
  	           END ELSE
  		        W_SECTIONANALCHARGE=REPLACE(W_SECTIONANALCHARGE,W_RANG,W_RANGPLUSFAIBLE,4;W_SECTIONANALCHARGE<W_RANG,W_RANGPLUSFAIBLE,4>-(W_TOTALREPARTANALBASE-ENR_DETAILCALCUL<12,I>))
	           END
	      END 
	 END
         * SI TOTAL#MONT RUB SAL
	 IF W_TOTALREPARTANALMONT#ENR_DETAILCALCUL<11,I> THEN
	      IF W_TOTALREPARTANALMONT<ENR_DETAILCALCUL<11,I> THEN
		   W_SECTIONANALCHARGE=REPLACE(W_SECTIONANALCHARGE,W_RANG,W_RANGPLUSFORT,6;W_SECTIONANALCHARGE<W_RANG,W_RANGPLUSFORT,6>-(W_TOTALREPARTANALMONT-ENR_DETAILCALCUL<11,I>))
	      END ELSE
  		   W_SECTIONANALCHARGE=REPLACE(W_SECTIONANALCHARGE,W_RANG,W_RANGPLUSFAIBLE,6;W_SECTIONANALCHARGE<W_RANG,W_RANGPLUSFAIBLE,6>-(W_TOTALREPARTANALMONT-ENR_DETAILCALCUL<11,I>))
	      END
         END

         * SI TOTAL#MONT RUB PAT
	 IF W_TOTALREPARTANALMONTPAT#ENR_DETAILCALCUL<14,I> THEN
	      IF W_TOTALREPARTANALMONTPAT<ENR_DETAILCALCUL<14,I> THEN
		   W_SECTIONANALCHARGE=REPLACE(W_SECTIONANALCHARGE,W_RANG,W_RANGPLUSFORT,8;W_SECTIONANALCHARGE<W_RANG,W_RANGPLUSFORT,8>-(W_TOTALREPARTANALMONTPAT-ENR_DETAILCALCUL<14,I>))
	      END ELSE
  		   W_SECTIONANALCHARGE=REPLACE(W_SECTIONANALCHARGE,W_RANG,W_RANGPLUSFAIBLE,8;W_SECTIONANALCHARGE<W_RANG,W_RANGPLUSFAIBLE,8>-(W_TOTALREPARTANALMONTPAT-ENR_DETAILCALCUL<14,I>))
	      END
         END

	 I=I+1
    REPEAT
RETURN

***************************************************
* AFFECTATION DES DONNEES:RUB. AP. CHARGE (SI ECLAT. ANAL)
***************************************************
230 *

* AFFECTATION DES RUBRIQUES AP. CHARGE
    I=1
    LOOP 
         UNTIL ENR_DETAILCALCUL<17,I>="" DO

	 READ ENR_RUBSAISIE FROM F.RUBSAISIE,ENR_DETAILCALCUL<17,I> ELSE
              *PRINT "ERREUR RUBSAISIE ":ENR_DETAILCALCUL<17,I>
              STOP
         END

	 W_TOTALREPARTANALBASE=0
	 W_TOTALREPARTANALMONT=0

	 W_NBATTRIBUTECLAT=DCOUNT(W_TABACTIVITE<1>,CHAR(253))

*	 IF ENR_CONTRAT<6>="A" THEN
              GOSUB 3131
*	 END ELSE
*	      GOSUB 313
*	 END

	 FOR X=1 TO W_NBATTRIBUTECLAT
	      W_SECTIONANALAPCHARGE=REPLACE(W_SECTIONANALAPCHARGE,W_RANG,X,1;W_TABACTIVITE<1,X>)
              W_SECTIONANALAPCHARGE=REPLACE(W_SECTIONANALAPCHARGE,W_RANG,X,2;ENR_DETAILCALCUL<17,I>)
	      W_SECTIONANALAPCHARGE=REPLACE(W_SECTIONANALAPCHARGE,W_RANG,X,3;ENR_RUBSAISIE<1>)
      	      W_SECTIONANALAPCHARGE=REPLACE(W_SECTIONANALAPCHARGE,W_RANG,X,4;W_SECTIONANALAPCHARGE<W_RANG,X,4>+INT(ENR_DETAILCALCUL<18,I>*W_TABACTIVITE<3,X>/100+1/2))
    	      W_SECTIONANALAPCHARGE=REPLACE(W_SECTIONANALAPCHARGE,W_RANG,X,5;ENR_DETAILCALCUL<19,I>/100)
      	      W_SECTIONANALAPCHARGE=REPLACE(W_SECTIONANALAPCHARGE,W_RANG,X,6;W_SECTIONANALAPCHARGE<W_RANG,X,6>+INT(ENR_DETAILCALCUL<20,I>*W_TABACTIVITE<3,X>/100+1/2))

              W_TOTALREPARTANALBASE=W_TOTALREPARTANALBASE+W_SECTIONANALAPCHARGE<W_RANG,X,4>
              W_TOTALREPARTANALMONT=W_TOTALREPARTANALMONT+W_SECTIONANALAPCHARGE<W_RANG,X,6>
	 NEXT

	 * SI TOTAL#BASE RUB

	 IF W_TOTALREPARTANALBASE#ENR_DETAILCALCUL<18,I> THEN
	      IF W_TOTALREPARTANALBASE<ENR_DETAILCALCUL<18,I> THEN
    		   W_SECTIONANALAPCHARGE=REPLACE(W_SECTIONANALAPCHARGE,W_RANG,W_RANGPLUSFORT,4;W_SECTIONANALAPCHARGE<W_RANG,W_RANGPLUSFORT,4>-(W_TOTALREPARTANALBASE-ENR_DETAILCALCUL<18,I>))
	      END ELSE
  		   W_SECTIONANALAPCHARGE=REPLACE(W_SECTIONANALAPCHARGE,W_RANG,W_RANGPLUSFAIBLE,4;W_SECTIONANALAPCHARGE<W_RANG,W_RANGPLUSFAIBLE,4>-(W_TOTALREPARTANALBASE-ENR_DETAILCALCUL<18,I>))
	      END
	 END

         * SI TOTAL#MONT RUB
	 IF W_TOTALREPARTANALMONT#(ENR_DETAILCALCUL<20,I>/100)THEN
	      IF W_TOTALREPARTANALMONT<(ENR_DETAILCALCUL<20,I>/100) THEN
		   W_SECTIONANALAPCHARGE=REPLACE(W_SECTIONANALAPCHARGE,W_RANG,W_RANGPLUSFORT,6;W_SECTIONANALAPCHARGE<W_RANG,W_RANGPLUSFORT,6>-(W_TOTALREPARTANALMONT-ENR_DETAILCALCUL<20,I>))
	      END ELSE
  		   W_SECTIONANALAPCHARGE=REPLACE(W_SECTIONANALAPCHARGE,W_RANG,W_RANGPLUSFAIBLE,6;W_SECTIONANALAPCHARGE<W_RANG,W_RANGPLUSFAIBLE,6>-(W_TOTALREPARTANALMONT-ENR_DETAILCALCUL<20,I>))
	      END
         END
	 I=I+1
    REPEAT
RETURN

***************************************************
* AFFECTATION DES DONNEES: ATT. 6,7,15,16,21
***************************************************
240 *
    
    W_NBACTIVITE=DCOUNT(W_TABACTIVITE<1>,CHAR(253))

    W_TOTALECLATBASE=0
    W_TOTALECLATMONT=0
    W_TOTALECLATMONTIMP=0
    W_TOTALECLATNETPAYER=0
    W_TOTALECLATMONTPAYER=0
    W_ECLATDETAIL=""

    FOR I=1 TO W_NBACTIVITE
	 GOSUB 360

	 W_ECLATDETAIL=REPLACE(W_ECLATDETAIL,1,W_RANGAFFECT;W_TABACTIVITE<1,I>)
	 * BASE + MONTANT BRUT
	 W_ECLATDETAIL=REPLACE(W_ECLATDETAIL,2,W_RANGAFFECT,1;W_ECLATDETAIL<2,W_RANGAFFECT,1>+INT(ENR_DETAILCALCUL<6>*W_TABACTIVITE<3,I>/10000+1/2))
	 W_ECLATDETAIL=REPLACE(W_ECLATDETAIL,3,W_RANGAFFECT,1;W_ECLATDETAIL<3,W_RANGAFFECT,1>+INT(ENR_DETAILCALCUL<7>*W_TABACTIVITE<3,I>/10000+1/2))
	 * MONTANT IMPOSABLE
	 W_ECLATDETAIL=REPLACE(W_ECLATDETAIL,4,W_RANGAFFECT,1;W_ECLATDETAIL<4,W_RANGAFFECT,1>+INT(ENR_DETAILCALCUL<15>*W_TABACTIVITE<3,I>/10000+1/2))
	 * NET A PAYER
	 W_ECLATDETAIL=REPLACE(W_ECLATDETAIL,5,W_RANGAFFECT,1;W_ECLATDETAIL<5,W_RANGAFFECT,1>+INT(ENR_DETAILCALCUL<16>*W_TABACTIVITE<3,I>/10000+1/2))
	 * MONTANT A PAYER
	 W_ECLATDETAIL=REPLACE(W_ECLATDETAIL,6,W_RANGAFFECT,1;W_ECLATDETAIL<6,W_RANGAFFECT,1>+INT(ENR_DETAILCALCUL<21>*W_TABACTIVITE<3,I>/10000+1/2))

	 * BASE + MONTANT BRUT
         W_TOTALECLATBASE=W_TOTALECLATBASE+W_ECLATDETAIL<2,W_RANGAFFECT,1>
         W_TOTALECLATMONT=W_TOTALECLATMONT+W_ECLATDETAIL<3,W_RANGAFFECT,1>
	 * MONTANT IMPOSABLE
         W_TOTALECLATMONTIMP=W_TOTALECLATMONTIMP+W_ECLATDETAIL<4,W_RANGAFFECT,1>
	 * NET A PAYER
         W_TOTALECLATNETPAYER=W_TOTALECLATNETPAYER+W_ECLATDETAIL<5,W_RANGAFFECT,1>
	 * MONTANT A PAYER
         W_TOTALECLATMONTPAYER=W_TOTALECLATMONTPAYER+W_ECLATDETAIL<6,W_RANGAFFECT,1>

    NEXT

    * SI TOTAL#BASE BRUT
    IF W_TOTALECLATBASE#ENR_DETAILCALCUL<6> THEN
	 IF W_TOTALECLATBASE<ENR_DETAILCALCUL<6> THEN
    	      W_ECLATDETAIL=REPLACE(W_ECLATDETAIL,2,W_RANGPLUSFORT,1;W_ECLATDETAIL<2,W_RANGPLUSFORT,1>-(W_TOTALECLATBASE-ENR_DETAILCALCUL<6>))
	 END ELSE
  	      W_ECLATDETAIL=REPLACE(W_ECLATDETAIL,2,W_RANGPLUSFAIBLE,1;W_ECLATDETAIL<2,W_RANGPLUSFAIBLE,1>-(W_TOTALECLATBASE-ENR_DETAILCALCUL<6>))
	 END
    END

    * SI TOTAL#MONT BRUT
    IF W_TOTALECLATMONT#ENR_DETAILCALCUL<7> THEN
	 IF W_TOTALECLATMONT<ENR_DETAILCALCUL<7> THEN
   	      W_ECLATDETAIL=REPLACE(W_ECLATDETAIL,3,W_RANGPLUSFORT,1;W_ECLATDETAIL<3,W_RANGPLUSFORT,1>-(W_TOTALECLATMONT-ENR_DETAILCALCUL<7>))
	 END ELSE
	      W_ECLATDETAIL=REPLACE(W_ECLATDETAIL,3,W_RANGPLUSFAIBLE,1;W_ECLATDETAIL<3,W_RANGPLUSFAIBLE,1>-(W_TOTALECLATMONT-ENR_DETAILCALCUL<7>))
	 END
    END

    * SI TOTAL#MONT IMP
    IF W_TOTALECLATMONTIMP#ENR_DETAILCALCUL<15> THEN
	 IF W_TOTALECLATMONTIMP<ENR_DETAILCALCUL<15> THEN
   	      W_ECLATDETAIL=REPLACE(W_ECLATDETAIL,4,W_RANGPLUSFORT,1;W_ECLATDETAIL<4,W_RANGPLUSFORT,1>-(W_TOTALECLATMONTIMP-ENR_DETAILCALCUL<15>))
	 END ELSE
	      W_ECLATDETAIL=REPLACE(W_ECLATDETAIL,4,W_RANGPLUSFAIBLE,1;W_ECLATDETAIL<4,W_RANGPLUSFAIBLE,1>-(W_TOTALECLATMONTIMP-ENR_DETAILCALCUL<15>))
	 END
    END

    * SI TOTAL#NET A PAYER
    IF W_TOTALECLATNETPAYER#ENR_DETAILCALCUL<16> THEN
	 IF W_TOTALECLATNETPAYER<ENR_DETAILCALCUL<16> THEN
   	      W_ECLATDETAIL=REPLACE(W_ECLATDETAIL,5,W_RANGPLUSFORT,1;W_ECLATDETAIL<5,W_RANGPLUSFORT,1>-(W_TOTALECLATNETPAYER-ENR_DETAILCALCUL<16>))
	 END ELSE
	      W_ECLATDETAIL=REPLACE(W_ECLATDETAIL,5,W_RANGPLUSFAIBLE,1;W_ECLATDETAIL<5,W_RANGPLUSFAIBLE,1>-(W_TOTALECLATNETPAYER-ENR_DETAILCALCUL<16>))
	 END
    END

    * SI TOTAL#MONT PAYER
    IF W_TOTALECLATMONTPAYER#ENR_DETAILCALCUL<21> THEN
	 IF W_TOTALECLATMONTPAYER<ENR_DETAILCALCUL<21> THEN
   	      W_ECLATDETAIL=REPLACE(W_ECLATDETAIL,6,W_RANGPLUSFORT,1;W_ECLATDETAIL<6,W_RANGPLUSFORT,1>-(W_TOTALECLATMONTPAYER-ENR_DETAILCALCUL<21>))
	 END ELSE
	      W_ECLATDETAIL=REPLACE(W_ECLATDETAIL,6,W_RANGPLUSFAIBLE,1;W_ECLATDETAIL<6,W_RANGPLUSFAIBLE,1>-(W_TOTALECLATMONTPAYER-ENR_DETAILCALCUL<21>))
	 END
    END

    GOSUB 503

RETURN

***************************************************
* VERIFICATION SI LA RUBRIQUE SAISIE EXISTE DEJA
***************************************************
300 J=1
    LOOP 
	 UNTIL ENR_DETAILCALCUL<2,I>=W_RUBSAISIECODE<1,1,J> OR W_RUBSAISIECODE<1,1,J>="" DO
	 J=J+1
    REPEAT

    W_RANG=J
RETURN

***************************************************
* VERIFICATION SI LA RUBRIQUE APRES CHG EXISTE DEJA
***************************************************
301 J=1
    LOOP 
	 UNTIL ENR_DETAILCALCUL<17,I>=W_RUBSAISIEAPCODE<1,1,J> OR W_RUBSAISIEAPCODE<1,1,J>="" DO
 	 J=J+1
    REPEAT

    W_RANG=J
RETURN

***************************************************
* VERIFICATION SI LA RUBRIQUE CHARGE EXISTE DEJA
***************************************************
302 J=1
    LOOP 
	 UNTIL ENR_DETAILCALCUL<8,I>=W_RUBCHARGECODE<1,1,J> OR W_RUBCHARGECODE<1,1,J>="" DO
	 J=J+1
    REPEAT

    W_RANG=J
RETURN

***************************************************
* VERIFICATION SI LA RUBRIQUE SAISIE EXISTE DEJA (SUB 210)
***************************************************
310 K=1
    LOOP 
	 UNTIL W_TABACTIVITE<2,I,1>=W_SECTIONANAL<1,K,2> AND W_TABACTIVITE<1,I>=W_SECTIONANAL<1,K,1> OR W_SECTIONANAL<1,K,2>="" DO
	 K=K+1
    REPEAT

    IF W_SECTIONANAL<1,K,2>#"" THEN
  	 W_RANG=K
    END ELSE
	 W_RANG=K
    END
RETURN

***************************************************
* VERIFICATION SI LA RUBRIQUE SAISIE EXISTE DEJA (SUB 211)
***************************************************
311 K=1
    LOOP 
	 UNTIL ENR_DETAILCALCUL<2,I>=W_SECTIONANAL<K,1,2> OR W_SECTIONANAL<K,1,2>="" DO
	 K=K+1
    REPEAT

    IF W_SECTIONANAL<K,1,2>#"" THEN
  	 W_RANG=K
    END ELSE
	 W_RANG=K
    END
RETURN

***************************************************
* VERIFICATION SI LA RUBRIQUE SAISIE EXISTE DEJA (SUB 212)
***************************************************
3111 K=1
    LOOP 
	 UNTIL ENR_RUBSAISIE<0>=W_SECTIONANAL<K,1,2> OR W_SECTIONANAL<K,1,2>="" DO
	 K=K+1
    REPEAT

    IF W_SECTIONANAL<K,1,2>#"" THEN
  	 W_RANG=K
    END ELSE
	 W_RANG=K
    END
RETURN

***************************************************
* VERIFICATION SI LA RUBRIQUE CHARGE EXISTE DEJA (SUB 211)
***************************************************
312 K=1
    LOOP 
	 UNTIL ENR_DETAILCALCUL<8,I>=W_SECTIONANALCHARGE<K,1,2> OR W_SECTIONANALCHARGE<K,1,2>="" DO
	 K=K+1
    REPEAT

    IF W_SECTIONANALCHARGE<K,1,2>#"" THEN
  	 W_RANG=K
    END ELSE
	 W_RANG=K
    END
RETURN

***************************************************
* VERIFICATION SI LA RUBRIQUE CHARGE EXISTE DEJA (SUB 212)
***************************************************
3121 K=1
    LOOP 
	 UNTIL ENR_RUBCHARGE<0>=W_SECTIONANALCHARGE<K,1,2> OR W_SECTIONANALCHARGE<K,1,2>="" DO
	 K=K+1
    REPEAT

    IF W_SECTIONANALCHARGE<K,1,2>#"" THEN
  	 W_RANG=K
    END ELSE
	 W_RANG=K
    END
RETURN

***************************************************
* VERIFICATION SI LA RUBRIQUE AP. CHARGE EXISTE DEJA (SUB 211)
***************************************************
313 K=1
    LOOP 
	 UNTIL ENR_DETAILCALCUL<17,I>=W_SECTIONANALAPCHARGE<K,1,2> OR W_SECTIONANALAPCHARGE<K,1,2>="" DO
	 K=K+1
    REPEAT

    IF W_SECTIONANALAPCHARGE<K,1,2>#"" THEN
  	 W_RANG=K
    END ELSE
	 W_RANG=K
    END
RETURN

***************************************************
* VERIFICATION SI LA RUBRIQUE AP. CHARGE EXISTE DEJA (SUB 212)
***************************************************
3131 K=1
    LOOP 
	 UNTIL ENR_RUBSAISIE<0>=W_SECTIONANALAPCHARGE<K,1,2> OR W_SECTIONANALAPCHARGE<K,1,2>="" DO
	 K=K+1
    REPEAT

    IF W_SECTIONANALAPCHARGE<K,1,2>#"" THEN
  	 W_RANG=K
    END ELSE
	 W_RANG=K
    END
RETURN

***************************************************
* RECHERCHE SI ACTIVITE DEJA AFFECTEE (RUB. SAISIE)
***************************************************
320 *

    K=2
    
    LOOP 
 	 UNTIL W_REGROUPBRUT<1,K>=W_SECTIONANAL<I,J,1> OR W_REGROUPBRUT<1,K>="" DO
	 K=K+1
    REPEAT

    W_RANGAFFECT=K
RETURN

***************************************************
* RECHERCHE SI RUB. SAISIE DEJA AFFECTEE
***************************************************
321 *

    K=2
    
    LOOP 
 	 UNTIL W_REGROUPBRUT<K,1>=W_SECTIONANAL<I,J,2> OR W_REGROUPBRUT<K,1>="" DO
	 K=K+1
    REPEAT

    W_RANGAFFECT=K
RETURN

***************************************************
* RECHERCHE SI ACTIVITE DEJA AFFECTEE (RUB. CHARGE)
***************************************************
330 *

    K=2
    
    LOOP 
 	 UNTIL W_REGROUPCHARGE<1,K>=W_SECTIONANALCHARGE<I,J,1> OR W_REGROUPCHARGE<1,K>="" DO
	 K=K+1
    REPEAT

    W_RANGAFFECT=K
RETURN

***************************************************
* RECHERCHE SI RUB. CHARGE DEJA AFFECTEE
***************************************************
331 *

    K=2
    
    LOOP 
 	 UNTIL W_REGROUPCHARGE<K,1>=W_SECTIONANALCHARGE<I,J,2> OR W_REGROUPCHARGE<K,1>="" DO
	 K=K+1
    REPEAT

    W_RANGAFFECT=K
RETURN

***************************************************
* RECHERCHE SI ACTIVITE DEJA AFFECTEE (RUB. AP. CHARGE)
***************************************************
340 *

    K=2
    
    LOOP 
 	 UNTIL W_REGROUPAPCHARGE<1,K>=W_SECTIONANALAPCHARGE<I,J,1> OR W_REGROUPAPCHARGE<1,K>="" DO
	 K=K+1
    REPEAT

    W_RANGAFFECT=K
RETURN

***************************************************
* RECHERCHE SI RUB. AP. CHARGE DEJA AFFECTEE
***************************************************
341 *

    K=2
    
    LOOP 
 	 UNTIL W_REGROUPAPCHARGE<K,1>=W_SECTIONANALAPCHARGE<I,J,2> OR W_REGROUPAPCHARGE<K,1>="" DO
	 K=K+1
    REPEAT

    W_RANGAFFECT=K
RETURN

***************************************************
* RECHERCHE SI ACTIVITE DEJA AFFECTEE (ATT 6+7+15+16+21)
***************************************************
350 *

    K=1
    
    LOOP 
 	 UNTIL W_REGROUPECLAT<1,K>=W_ECLATDETAIL<1,J,1> OR W_REGROUPECLAT<1,K>="" DO
	 K=K+1
    REPEAT

    W_RANGAFFECT=K
RETURN

***************************************************
* RECHERCHE SI ACTIVITE DEJA AFFECTEE (SUB 240)
***************************************************
360 *

    K=1
  
    LOOP 
	 UNTIL W_ECLATDETAIL<1,K>=W_TABACTIVITE<1,I> OR W_ECLATDETAIL<1,K>="" DO
	 K=K+1
    REPEAT

    W_RANGAFFECT=K
RETURN

***************************************************
* CALCUL DE LA SOMME DES HEURES
***************************************************
400 *
    I=1

    LOOP 
         UNTIL W_TABACTIVITE<1,I>=ENR_DETAILCALCUL<26,X> OR W_TABACTIVITE<1,I>="" DO
	 I=I+1
    REPEAT

    IF W_TABACTIVITE<1,I>="" THEN
	 W_TABACTIVITE=REPLACE(W_TABACTIVITE,1,I;ENR_DETAILCALCUL<26,X>)
    END 
    W_TABACTIVITE=REPLACE(W_TABACTIVITE,2,I,1;ENR_DETAILCALCUL<24,X>)
    W_TABACTIVITE=REPLACE(W_TABACTIVITE,2,I,2;W_TABACTIVITE<2,I,2>+ENR_DETAILCALCUL<25,X>)
    W_TABACTIVITE=REPLACE(W_TABACTIVITE,2,I,3;W_TABACTIVITE<2,I,3>+ENR_DETAILCALCUL<27,X>)

    W_TOTAL=W_TOTAL+ENR_DETAILCALCUL<25,X>
RETURN

***************************************************
* CALCUL DU POURCENTAGE DE REPARTITION (SI PROD.)
***************************************************
401 *
    I=1
   
    W_TOTALREPART=0
    W_REPARTPLUSFORT=""
    W_REPARTPLUSFAIBLE=""

*IF W_TOTAL=0 THEN
*PRINT CLE
*PRINT W_TOTAL
*DEBUG
*END
    W_REPARTPLUSFAIBLE=REPLACE(W_REPARTPLUSFAIBLE,1,1,1;INT(W_TABACTIVITE<2,1,2>/W_TOTAL*10000+1/2))
    W_REPARTPLUSFAIBLE=REPLACE(W_REPARTPLUSFAIBLE,1,1,2;1)

    LOOP 
         UNTIL W_TABACTIVITE<2,I,1>="" DO
         W_TABACTIVITE=REPLACE(W_TABACTIVITE,3,I;INT(W_TABACTIVITE<2,I,2>/W_TOTAL*10000+1/2)) 
         W_TOTALREPART=W_TOTALREPART+W_TABACTIVITE<3,I>

         * STOCKE LE POURCENTAGE LE + FORT
	 IF INT((W_TABACTIVITE<2,I,2>/W_TOTAL)*10000+1/2)>W_REPARTPLUSFORT<1,1,1> THEN
	      W_REPARTPLUSFORT=REPLACE(W_REPARTPLUSFORT,1,1,1;INT(W_TABACTIVITE<2,I,2>/W_TOTAL*10000+1/2))
              W_REPARTPLUSFORT=REPLACE(W_REPARTPLUSFORT,1,1,2;I)
 	 END

         * STOCKE LE POURCENTAGE LE + FAIBLE
	 IF INT((W_TABACTIVITE<2,I,2>/W_TOTAL)*10000+1/2)<W_REPARTPLUSFAIBLE<1,1,1> THEN
	      W_REPARTPLUSFAIBLE=REPLACE(W_REPARTPLUSFAIBLE,1,1,1;INT(W_TABACTIVITE<2,I,2>/W_TOTAL*10000+1/2))
              W_REPARTPLUSFAIBLE=REPLACE(W_REPARTPLUSFAIBLE,1,1,2;I)
 	 END
         I=I+1
    REPEAT

    IF W_TOTALREPART#10000 THEN
	 IF W_TOTALREPART<10000 THEN
	      W_RANGPLUSFORT=W_REPARTPLUSFORT<1,1,2>
 	      W_RANGPLUSFAIBLE=W_REPARTPLUSFAIBLE<1,1,2>

    	      W_TABACTIVITE=REPLACE(W_TABACTIVITE,3,W_RANGPLUSFORT;W_REPARTPLUSFORT<1,1,1>-(W_TOTALREPART-10000))
	 END ELSE
	      W_RANGPLUSFORT=W_REPARTPLUSFORT<1,1,2>
 	      W_RANGPLUSFAIBLE=W_REPARTPLUSFAIBLE<1,1,2>

    	      W_TABACTIVITE=REPLACE(W_TABACTIVITE,3,W_RANGPLUSFAIBLE;W_REPARTPLUSFAIBLE<1,1,1>-(W_TOTALREPART-10000))
	 END
    END ELSE
	 W_RANGPLUSFORT=W_REPARTPLUSFORT<1,1,2>
 	 W_RANGPLUSFAIBLE=W_REPARTPLUSFAIBLE<1,1,2>
    END

RETURN

***************************************************
* CALCUL DU POURCENTAGE DE REPARTITION (SI ADM.)
***************************************************
402 *
    I=1

    W_TOTALREPART=0
    W_REPARTPLUSFORT=""
    W_REPARTPLUSFAIBLE=""
    W_REPARTPLUSFAIBLE=REPLACE(W_REPARTPLUSFAIBLE,1,1,1;ENR_CONTRAT<37,I>)
    W_REPARTPLUSFAIBLE=REPLACE(W_REPARTPLUSFAIBLE,1,1,2;1)
   
    LOOP 
         UNTIL ENR_CONTRAT<36,I>="" DO
         W_TABACTIVITE=REPLACE(W_TABACTIVITE,1,I;ENR_CONTRAT<36,I>) 
**         W_TABACTIVITE=REPLACE(W_TABACTIVITE,3,I;ENR_CONTRAT<37,I>*100) 
         W_TABACTIVITE=REPLACE(W_TABACTIVITE,3,I;ENR_CONTRAT<37,I>) 

         * STOCKE LE POURCENTAGE LE + FORT
	 IF ENR_CONTRAT<37,I>>W_REPARTPLUSFORT<1,1> THEN
**	      W_REPARTPLUSFORT=REPLACE(W_REPARTPLUSFORT,1,1,1;ENR_CONTRAT<37,I>*100)
	      W_REPARTPLUSFORT=REPLACE(W_REPARTPLUSFORT,1,1,1;ENR_CONTRAT<37,I>)
              W_REPARTPLUSFORT=REPLACE(W_REPARTPLUSFORT,1,1,2;I)
 	 END

         * STOCKE LE POURCENTAGE LE + FAIBLE
	 IF ENR_CONTRAT<37,I><W_REPARTPLUSFAIBLE<1,1> THEN
**	      W_REPARTPLUSFAIBLE=REPLACE(W_REPARTPLUSFAIBLE,1,1,1;ENR_CONTRAT<37,I>*100)
	      W_REPARTPLUSFAIBLE=REPLACE(W_REPARTPLUSFAIBLE,1,1,1;ENR_CONTRAT<37,I>)
              W_REPARTPLUSFAIBLE=REPLACE(W_REPARTPLUSFAIBLE,1,1,2;I)
 	 END

         I=I+1
    REPEAT

    W_RANGPLUSFORT=W_REPARTPLUSFORT<1,1,2>
    W_RANGPLUSFAIBLE=W_REPARTPLUSFAIBLE<1,1,2>

RETURN

***************************************************
* REGROUPE LES ACTIVITES ENSEMBLES (RUB. SAISIE)
***************************************************
500 *

    * COMPTE LE NOMBRE DE RUBRIQUE DE SAISIE
    W_NBRUBSAISIE=DCOUNT(W_SECTIONANAL,CHAR(254))

    FOR I=1 TO W_NBRUBSAISIE

	 * COMPTE LE NOMBRE D'ACTIVITE
	 W_NBACTIVITE=DCOUNT(W_SECTIONANAL<I>,CHAR(253))

	 FOR J=1 TO W_NBACTIVITE	
	      * VERIFICATION SI ACTIVITE DEJA AFFECTEE
	      GOSUB 320

              * AFFECTATION DE L'ACTIVITE
	      W_REGROUPBRUT=REPLACE(W_REGROUPBRUT,1,K;W_SECTIONANAL<I,J,1>)

	      W_RANGACT=K    

	      * VERIFICATION SI RUBRIQUE DEJA AFFECTEE
	      GOSUB 321

              * AFFECTATION DE LA RUBRIQUE - CODE
	      W_REGROUPBRUT=REPLACE(W_REGROUPBRUT,K,1;W_SECTIONANAL<I,J,2>)

	      W_RANGRUB=K

	      * BASE - MONTANT
	      W_REGROUPBRUT=REPLACE(W_REGROUPBRUT,W_RANGRUB,W_RANGACT,1;W_REGROUPBRUT<W_RANGRUB,W_RANGACT,1>+W_SECTIONANAL<I,J,4>)
	      W_REGROUPBRUT=REPLACE(W_REGROUPBRUT,W_RANGRUB,W_RANGACT,2;W_REGROUPBRUT<W_RANGRUB,W_RANGACT,2>+W_SECTIONANAL<I,J,5>)
	 NEXT 
    NEXT

RETURN

***************************************************
* REGROUPE LES ACTIVITES ENSEMBLES (RUB. CHARGE)
***************************************************
501 *

    * COMPTE LE NOMBRE DE RUBRIQUE DE SAISIE
    W_NBRUBCHARGE=DCOUNT(W_SECTIONANALCHARGE,CHAR(254))

    FOR I=1 TO W_NBRUBCHARGE

	 * COMPTE LE NOMBRE D'ACTIVITE
	 W_NBACTIVITE=DCOUNT(W_SECTIONANALCHARGE<I>,CHAR(253))

	 FOR J=1 TO W_NBACTIVITE	
	      * VERIFICATION SI ACTIVITE DEJA AFFECTEE
	      GOSUB 330

              * AFFECTATION DE L'ACTIVITE
	      W_REGROUPCHARGE=REPLACE(W_REGROUPCHARGE,1,K;W_SECTIONANALCHARGE<I,J,1>)

	      W_RANGACT=K    

	      * VERIFICATION SI RUBRIQUE DEJA AFFECTEE
	      GOSUB 331

              * AFFECTATION DE LA RUBRIQUE - CODE
	      W_REGROUPCHARGE=REPLACE(W_REGROUPCHARGE,K,1;W_SECTIONANALCHARGE<I,J,2>)

	      W_RANGRUB=K

	      * BASE 
	      W_REGROUPCHARGE=REPLACE(W_REGROUPCHARGE,W_RANGRUB,W_RANGACT,1;W_REGROUPCHARGE<W_RANGRUB,W_RANGACT,1>+W_SECTIONANALCHARGE<I,J,4>)
	      * TAUX - MONTANT PATRONAL
	      W_REGROUPCHARGE=REPLACE(W_REGROUPCHARGE,W_RANGRUB,W_RANGACT,2;W_SECTIONANALCHARGE<I,J,5>)
	      W_REGROUPCHARGE=REPLACE(W_REGROUPCHARGE,W_RANGRUB,W_RANGACT,3;W_REGROUPCHARGE<W_RANGRUB,W_RANGACT,3>+W_SECTIONANALCHARGE<I,J,6>)
	      * TAUX - MONTANT SALARIAL
	      W_REGROUPCHARGE=REPLACE(W_REGROUPCHARGE,W_RANGRUB,W_RANGACT,4;W_SECTIONANALCHARGE<I,J,7>)
	      W_REGROUPCHARGE=REPLACE(W_REGROUPCHARGE,W_RANGRUB,W_RANGACT,5;W_REGROUPCHARGE<W_RANGRUB,W_RANGACT,5>+W_SECTIONANALCHARGE<I,J,8>)
	 NEXT 
    NEXT

RETURN

***************************************************
* REGROUPE LES ACTIVITES ENSEMBLES (RUB. AP. CHARGE)
***************************************************
502 *

    * COMPTE LE NOMBRE DE RUBRIQUE DE SAISIE APRES CHARGE
    W_NBRUBAPCHARGE=DCOUNT(W_SECTIONANALAPCHARGE,CHAR(254))

    FOR I=1 TO W_NBRUBAPCHARGE

	 * COMPTE LE NOMBRE D'ACTIVITE
	 W_NBACTIVITE=DCOUNT(W_SECTIONANALAPCHARGE<I>,CHAR(253))

	 FOR J=1 TO W_NBACTIVITE	
	      * VERIFICATION SI ACTIVITE DEJA AFFECTEE
	      GOSUB 340

              * AFFECTATION DE L'ACTIVITE
	      W_REGROUPAPCHARGE=REPLACE(W_REGROUPAPCHARGE,1,K;W_SECTIONANALAPCHARGE<I,J,1>)

	      W_RANGACT=K    

	      * VERIFICATION SI RUBRIQUE DEJA AFFECTEE
	      GOSUB 341

              * AFFECTATION DE LA RUBRIQUE - CODE
	      W_REGROUPAPCHARGE=REPLACE(W_REGROUPAPCHARGE,K,1;W_SECTIONANALAPCHARGE<I,J,2>)

	      W_RANGRUB=K

	      * BASE - MONTANT
	      W_REGROUPAPCHARGE=REPLACE(W_REGROUPAPCHARGE,W_RANGRUB,W_RANGACT,1;W_REGROUPAPCHARGE<W_RANGRUB,W_RANGACT,1>+W_SECTIONANALAPCHARGE<I,J,4>)
	      W_REGROUPAPCHARGE=REPLACE(W_REGROUPAPCHARGE,W_RANGRUB,W_RANGACT,2;W_REGROUPAPCHARGE<W_RANGRUB,W_RANGACT,2>+W_SECTIONANALAPCHARGE<I,J,5>)
	      W_REGROUPAPCHARGE=REPLACE(W_REGROUPAPCHARGE,W_RANGRUB,W_RANGACT,3;W_REGROUPAPCHARGE<W_RANGRUB,W_RANGACT,3>+W_SECTIONANALAPCHARGE<I,J,6>)
	 NEXT 
    NEXT

RETURN

***************************************************
* REGROUPE LES ACTIVITES ENSEMBLES (ATT 6+7+15+16+21)
***************************************************
503 *

    * COMPTE LE NOMBRE D'ACTIVITE
    W_NBACTIVITE=DCOUNT(W_ECLATDETAIL<1>,CHAR(253))

    FOR J=1 TO W_NBACTIVITE	
	 * VERIFICATION SI ACTIVITE DEJA AFFECTEE
	 GOSUB 350

         * AFFECTATION DE L'ACTIVITE
	 W_REGROUPECLAT=REPLACE(W_REGROUPECLAT,1,K;W_ECLATDETAIL<1,J,1>)

	 W_RANGACT=K+1    

         * BASE - MONTANT BRUT
	 W_REGROUPECLAT=REPLACE(W_REGROUPECLAT,W_RANGACT,1;W_REGROUPECLAT<W_RANGACT,1>+W_ECLATDETAIL<2,J,1>)
	 W_REGROUPECLAT=REPLACE(W_REGROUPECLAT,W_RANGACT,2;W_REGROUPECLAT<W_RANGACT,2>+W_ECLATDETAIL<3,J,1>)

	 * MONTANT IMPOSABLE
	 W_REGROUPECLAT=REPLACE(W_REGROUPECLAT,W_RANGACT,3;W_REGROUPECLAT<W_RANGACT,3>+W_ECLATDETAIL<4,J,1>)

	 * NET A PAYER
	 W_REGROUPECLAT=REPLACE(W_REGROUPECLAT,W_RANGACT,4;W_REGROUPECLAT<W_RANGACT,4>+W_ECLATDETAIL<5,J,1>)

	 * MONTANT A PAYER
	 W_REGROUPECLAT=REPLACE(W_REGROUPECLAT,W_RANGACT,5;W_REGROUPECLAT<W_RANGACT,5>+W_ECLATDETAIL<6,J,1>)

    NEXT

RETURN

***************************************************
* REGROUPE LES ACTIVITES PAR SECTION ANALYTIQUE (SAISIE)
***************************************************
600 *
    
    W_NBACTIVITESAISIE=DCOUNT(W_REGROUPBRUT<1>,CHAR(253))

    FOR I=2 TO W_NBRUBSAISIE

         IF W_REGROUPBRUT<I,1>="" THEN
	      EXIT
	 END

	 FOR J=2 TO W_NBACTIVITESAISIE

	      * LECTURE ACTIVITES
	      READ ENR_ACTIVITE FROM F.ACTIVITES,W_REGROUPBRUT<1,J> ELSE
		   *PRINT "ERREUR ACTIVITES ":W_REGROUPBRUT<1,J>
		   STOP
	      END
	
	      GOSUB 610

	      * SECTION ANALYTIQUE
	      W_REGROUPSECTIONANALYTIQUE=REPLACE(W_REGROUPSECTIONANALYTIQUE,1,W_RANGSECTION;ENR_ACTIVITE<2>)

     	      * RUBRIQUE
              W_REGROUPSECTIONANAL=REPLACE(W_REGROUPSECTIONANAL,I,1;W_REGROUPBRUT<I,1>)
	      * BASE
              W_REGROUPSECTIONANAL=REPLACE(W_REGROUPSECTIONANAL,I,W_RANGSECTION,1;W_REGROUPSECTIONANAL<I,W_RANGSECTION,1>+W_REGROUPBRUT<I,J,1>/100)
	      * MONTANT
              W_REGROUPSECTIONANAL=REPLACE(W_REGROUPSECTIONANAL,I,W_RANGSECTION,2;W_REGROUPSECTIONANAL<I,W_RANGSECTION,2>+W_REGROUPBRUT<I,J,2>/100)

	 NEXT

    NEXT

    W_REGROUPSECTIONANALBRUT=W_REGROUPSECTIONANAL
RETURN

***************************************************
* REGROUPE LES ACTIVITES PAR SECTION ANALYTIQUE (CHARGE)
***************************************************
601 *

    W_REGROUPSECTIONANAL=""
    
    W_NBACTIVITECHARGE=DCOUNT(W_REGROUPCHARGE<1>,CHAR(253))

    FOR I=2 TO W_NBRUBCHARGE

         IF W_REGROUPCHARGE<I,1>="" THEN
	      EXIT
	 END

	 FOR J=2 TO W_NBACTIVITECHARGE

	      * LECTURE ACTIVITES
	      READ ENR_ACTIVITE FROM F.ACTIVITES,W_REGROUPCHARGE<1,J> ELSE
		   *PRINT "ERREUR ACTIVITES ":W_REGROUPCHARGE<1,J>
		   STOP
	      END
	
	      GOSUB 610

     	      * RUBRIQUE
              W_REGROUPSECTIONANAL=REPLACE(W_REGROUPSECTIONANAL,I,1;W_REGROUPCHARGE<I,1>)
	      * BASE
              W_REGROUPSECTIONANAL=REPLACE(W_REGROUPSECTIONANAL,I,W_RANGSECTION,1;W_REGROUPSECTIONANAL<I,W_RANGSECTION,1>+W_REGROUPCHARGE<I,J,1>/100)
	      * TAUX - MONTANT SAL
              W_REGROUPSECTIONANAL=REPLACE(W_REGROUPSECTIONANAL,I,W_RANGSECTION,2;W_REGROUPCHARGE<I,J,2>)
              W_REGROUPSECTIONANAL=REPLACE(W_REGROUPSECTIONANAL,I,W_RANGSECTION,3;W_REGROUPSECTIONANAL<I,W_RANGSECTION,3>+W_REGROUPCHARGE<I,J,3>/100)
	      * TAUX - MONTANT PAT
              W_REGROUPSECTIONANAL=REPLACE(W_REGROUPSECTIONANAL,I,W_RANGSECTION,4;W_REGROUPCHARGE<I,J,4>)
              W_REGROUPSECTIONANAL=REPLACE(W_REGROUPSECTIONANAL,I,W_RANGSECTION,5;W_REGROUPSECTIONANAL<I,W_RANGSECTION,5>+W_REGROUPCHARGE<I,J,5>/100)

	 NEXT

    NEXT
 
    W_REGROUPSECTIONANALCHARGE=W_REGROUPSECTIONANAL
RETURN

***************************************************
* REGROUPE LES ACTIVITES PAR SECTION ANALYTIQUE (APRES CHARGE)
***************************************************
602 *

    I=2

    W_REGROUPSECTIONANAL=""

    W_NBACTIVITEAPCHARGE=DCOUNT(W_REGROUPAPCHARGE<1>,CHAR(253))

    LOOP 
	 UNTIL W_REGROUPAPCHARGE<I,1>="" DO

	 FOR J=2 TO W_NBACTIVITEAPCHARGE

	      * LECTURE ACTIVITES
	      READ ENR_ACTIVITE FROM F.ACTIVITES,W_REGROUPAPCHARGE<1,J> ELSE
		   *PRINT "ERREUR ACTIVITES ":W_REGROUPAPCHARGE<1,J>
		   STOP
	      END
	
	      GOSUB 610

     	      * RUBRIQUE
              W_REGROUPSECTIONANAL=REPLACE(W_REGROUPSECTIONANAL,I,1;W_REGROUPAPCHARGE<I,1>)
	      * BASE
              W_REGROUPSECTIONANAL=REPLACE(W_REGROUPSECTIONANAL,I,W_RANGSECTION,1;W_REGROUPSECTIONANAL<I,W_RANGSECTION,1>+W_REGROUPAPCHARGE<I,J,1>/100)
	      * TAUX - MONTANT
              W_REGROUPSECTIONANAL=REPLACE(W_REGROUPSECTIONANAL,I,W_RANGSECTION,2;W_REGROUPAPCHARGE<I,J,2>)
              W_REGROUPSECTIONANAL=REPLACE(W_REGROUPSECTIONANAL,I,W_RANGSECTION,3;W_REGROUPSECTIONANAL<I,W_RANGSECTION,3>+W_REGROUPAPCHARGE<I,J,3>/100)

	 NEXT

	 I=I+1
    REPEAT
 
    W_REGROUPSECTIONANALAPCHARGE=W_REGROUPSECTIONANAL
RETURN

***************************************************
* REGROUPE LES ACTIVITES PAR SECTION ANALYTIQUE (ATT 6+7+15+16+21)
***************************************************
603 *

    I=2

    W_REGROUPECLATDETAIL=""

    W_NBACTIVITEECLAT=DCOUNT(W_REGROUPECLAT<1>,CHAR(253))

    FOR J=1 TO W_NBACTIVITEECLAT

         * LECTURE ACTIVITES
	 READ ENR_ACTIVITE FROM F.ACTIVITES,W_REGROUPECLAT<1,J> ELSE
	      *PRINT "ERREUR ACTIVITES ":W_REGROUPECLAT<1,J>
	      STOP
	 END
	
	 GOSUB 611

         * BASE BRUT + MONTANT BRUT
         W_REGROUPECLATDETAIL=REPLACE(W_REGROUPECLATDETAIL,1,W_RANGSECTION,1;W_REGROUPECLATDETAIL<1,W_RANGSECTION,1>+W_REGROUPECLAT<J+1,1>/100)
         W_REGROUPECLATDETAIL=REPLACE(W_REGROUPECLATDETAIL,1,W_RANGSECTION,2;W_REGROUPECLATDETAIL<1,W_RANGSECTION,2>+W_REGROUPECLAT<J+1,2>/100)

         * MONTANT IMPOSABLE
         W_REGROUPECLATDETAIL=REPLACE(W_REGROUPECLATDETAIL,2,W_RANGSECTION,1;W_REGROUPECLATDETAIL<2,W_RANGSECTION,1>+W_REGROUPECLAT<J+1,3>/100)

         * NET A PAYER
         W_REGROUPECLATDETAIL=REPLACE(W_REGROUPECLATDETAIL,3,W_RANGSECTION,1;W_REGROUPECLATDETAIL<3,W_RANGSECTION,1>+W_REGROUPECLAT<J+1,4>/100)

         * MONTANT A PAYER
         W_REGROUPECLATDETAIL=REPLACE(W_REGROUPECLATDETAIL,4,W_RANGSECTION,1;W_REGROUPECLATDETAIL<4,W_RANGSECTION,1>+W_REGROUPECLAT<J+1,5>/100)

    NEXT

RETURN

***************************************************
* RECHERCHE RANG SECTION ANALYTIQUE 
***************************************************
610 *

    K=2

    LOOP
	 UNTIL ENR_ACTIVITE<2>=W_REGROUPSECTIONANALYTIQUE<1,K> OR W_REGROUPSECTIONANALYTIQUE<1,K>="" DO
	 K=K+1
    REPEAT

    W_RANGSECTION=K

RETURN

***************************************************
* RECHERCHE RANG SECTION ANALYTIQUE (SUB 603)
***************************************************
611 *

    K=2

    LOOP
	 UNTIL ENR_ACTIVITE<2>=W_REGROUPSECTIONANALYTIQUE<1,K> OR W_REGROUPSECTIONANALYTIQUE<1,K>="" DO
	 K=K+1
    REPEAT

    W_RANGSECTION=K-1

RETURN

***************************************************
* MISE A ZERO DES VARIABLES
***************************************************
999 W_BRUTACQUISBASE=0
    W_BRUTACQUISMONT=0
    W_NETIMPOSABLE=0
    W_NETAPAYER=0
    W_MONTANTAPAYER=0
    W_TOTALTAUX=0
    W_TOTALMONT=0
    W_RANGANAL=0
    W_RANGANALRUB=0
    W_NBATTRIBUTECLAT=0
    W_TOTALREPART=0
    W_RUBSAISIECODE=""
    W_RUBSAISIELIB=""
    W_RUBSAISIEBASE=""
    W_RUBSAISIEMONT=""
    W_RUBSAISIEAPCODE=""
    W_RUBSAISIEAPLIB=""
    W_RUBSAISIEAPBASE=""
    W_RUBSAISIEAPMONT=""
    W_RUBCHARGECODE=""
    W_RUBCHARGELIB=""
    W_RUBCHARGEBASE=""
    W_RUBCHARGETAUXPAT=""
    W_RUBCHARGEMONTPAT=""
    W_RUBCHARGETAUXSAL=""
    W_RUBCHARGEMONTSAL=""
    W_RUBCHARGETOTALTAUX=""
    W_RUBCHARGETOTALMONT=""
    W_REPARTPLUSFORT=""
RETURN
